/*
 * Copyright (C) 2012 mAPPn.Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.mol.market.demo.ui;

import android.content.Intent;
import android.os.Bundle;
import com.mol.market.Constants;
import com.mol.market.R;
import com.mol.market.common.network.MarketAPI;
import com.mol.market.common.util.ScreenRules;
import com.mol.market.common.util.ScreenRules.Rules;
import com.mol.market.common.util.Utils;
import com.mol.market.demo.widget.BaseFragmentActivity.KeyStore;
import com.mol.market.demo.widget.LazyLoadFragmentWrapper;
import com.mol.market.ui.core.GridAdapter;
import com.mol.market.ui.core.GridAdapter.OnItemClickListener;
import com.mol.market.ui.core.LazyLoadAdapter;
import com.mol.market.ui_v4.ProductDetailActivity;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * 标签列表页(List)
 * @author Chaos	
 * @Description 点击任意标签进入展示的页面
 * @date 2013-1-21 
 */
public class TagsListFragment extends LazyLoadFragmentWrapper {

    @SuppressWarnings("unchecked")
    @Override
    protected ArrayList<HashMap<String, Object>> getDataFromResult(int method, Object obj) {
        return (ArrayList<HashMap<String, Object>>) ((HashMap<String, Object>) obj)
                .get(Constants.KEY_PRODUCT_LIST);
    }

    @Override
    protected void load() {

        Bundle args = getArguments();

        if (args != null && args.containsKey(KeyStore.KEY_ARG)) {
            MarketAPI.getCategoryTagsDetails(getApplicationContext(), this, getSize(), getStart(),
                    args.getString(KeyStore.KEY_ARG));
        }
    }

    @Override
    protected LazyLoadAdapter initLazyLoadAdapter() {

        GridAdapter adapter = new GridAdapter(
                this,
                null,
                ScreenRules.getLayout(getWidthMatching(), Rules.Download),
                new String[]{
                        Constants.KEY_PRODUCT_ICON_URL,
                        Constants.KEY_PRODUCT_NAME,
                        Constants.KEY_PRODUCT_AUTHOR,
                        Constants.KEY_PRODUCT_IS_STAR,
                        Constants.KEY_PRODUCT_DOWNLOAD_COUNT,
                        Constants.KEY_PRODUCT_DOWNLOAD,
                        Constants.KEY_PRODUCT_SIZE,
                        "flag"
                },
                new int[]{
                        R.id.iv_logo,
                        R.id.tv_name,
                        R.id.tv_description,
                        R.id.iv_star,
                        R.id.tv_downloading,
                        R.id.tv_download,
                        R.id.tv_size,
                        R.id.flag
                });

        adapter.setNumColumns(ScreenRules.getNumColumns(getWidthMatching(), Rules.Download));
        adapter.setProductList();
        adapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(int pos, int realPos, HashMap<String, Object> item) {
                String pid = (String) item.get(Constants.KEY_PRODUCT_ID);
                String name = (String) item.get(Constants.KEY_PRODUCT_NAME);
                Intent detailIntent = new Intent(getActivity(), ProductDetailActivity.class);
                detailIntent.putExtra(Constants.EXTRA_PRODUCT_ID, pid);
                detailIntent.putExtra(Constants.EXTRA_PRODUCT_NAME, name);
                detailIntent.putExtra(Constants.EXTRA_SOURCE_TYPE, Constants.SOURCE_TYPE_GFAN);
                getActivity().startActivity(detailIntent);
                Utils.trackEvent(getApplicationContext(), "标签", "标签>" + name);
            }
        });

        return adapter;
    }

}
